package com.itheima.service.impl;

import com.itheima.mapper.CheckItemMapper;
import com.itheima.pojo.CheckItem;
import com.itheima.service.CheckItemService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.common.entity.PageResult;
import com.itheima.common.entity.QueryPageBean;
import com.itheima.mapper.CheckGroupCheckItemMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author Encounter
 * @date 2024/10/02 17:08<br/>
 */
@Service
public class CheckItemServiceImpl implements CheckItemService
    {
        @Autowired
        private CheckItemMapper checkItemMapper;
        @Autowired
        private CheckGroupCheckItemMapper checkGroupCheckItemMapper;
        
        /**
         * 新增检查项
         *
         * @param checkItem 检查项
         * @return int  新增条数
         */
        @Override
        public int add(CheckItem checkItem)
            {
                return checkItemMapper.add(checkItem);
            }
        
        /**
         * 分页查询
         *
         * @param queryPageBean 查询页面 Bean
         * @return {@link PageResult }
         */
        @Override
        public PageResult page(QueryPageBean queryPageBean)
            {
                //设置分页参数
                PageHelper.startPage(queryPageBean.getCurrentPage(), queryPageBean.getPageSize());
                
                List<CheckItem> checkItemList = checkItemMapper.query();
                Page<CheckItem> checkItemPage = (Page<CheckItem>) checkItemList;
                
                return new PageResult(checkItemPage.getTotal(), checkItemPage.getResult());
            }
        
        /**
         * 根据id查询
         *
         * @param id 检查项id
         * @return {@link CheckItem }
         */
        @Override
        public CheckItem findById(Integer id)
            {
                return checkItemMapper.queryById(id);
            }
        
        /**
         * 删除由id
         *
         * @param id 检查项id
         * @return int
         */
        @Override
        public int deleteById(Integer id)
            {
                //根据检查项id查询是否有关联检查组
                Integer num = checkGroupCheckItemMapper.findCheckGroupIdByCheckItemId(id);
                //System.out.println("已关联的检查组："+num);
                if (num != null)
                    {
                        //有关联检查组，不允许删除
                        return 0;
                    }
                return checkItemMapper.deleteById(id);
            }
        
        /**
         * 查询全部
         *
         * @return {@link List }<{@link CheckItem }>
         */
        @Override
        public List<CheckItem> queryAll()
            {
                return checkItemMapper.query();
            }
        
        /**
         * 找到检查项目IDS由检查群id
         *
         * @param checkGroupId 检查群id
         * @return {@link List }<{@link Integer }>
         */
        @Override
        public List<Integer> findCheckItemIdsByCheckGroupId(Integer checkGroupId)
            {
                return checkGroupCheckItemMapper.findCheckItemIdsByCheckGroupId(checkGroupId);
            }
        
        /**
         * 修改检查项
         *
         * @param checkItem 检查项
         * @return int 修改成功的数据条数
         */
        @Override
        public int update(CheckItem checkItem)
            {
                //未修改检查项所属检查组，直接修改数据库数据即可
                return checkItemMapper.update(checkItem);
            }
    }
